.TITLE CVRTM .IDENT /02/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; VERSION 02 ; ; D. N. CUTLER 12-AUG-73 ; ; PREVIOUSLY MODIFIED BY: ; ; D. N. CUTLER ; ; MODIFIED BY: ; ;+ ; **-$CVRTM-CONVERT TIME ; ; THIS ROUTINE IS CALLED TO CONVERT A TIME INTERVAL-TIME UNITS PAIR ; TO A CLOCK TICKS COUNT. ; ; INPUTS: ; ; R3=ADDRESS OF TIME INTERVAL-TIME UNITS PAIR. ; ; OUTPUTS: ; ; IF AN ILLEGAL TIME INTERVAL (GREATER THAN 15 BITS) OR ; ILLEGAL TIME UNITS (ZERO OR GREATER THAN 4) IS SPECIFIED, ; THEN A DIRECTIVE STATUS OF 'D.RS93' IS RETURNED. ELSE THE ; TICKS COUNT IS RETURNED WITH THE HIGH ORDER PART IN R0 AND ; THE LOW ORDER PART IN R1. R3 IS ADVANCED BY 4 THUS POINTING ; PAST THE TIME INTERVAL-TIME UNITS PAIR. ;- $CVRTM::MOV (R3)+,R1 ;GET TIME INTERVAL BMI 70$ ;IF MI ILLEGAL TIME INTERVAL MOV (R3)+,R0 ;GET TIME UNITS DEC R0 ;BACK OFF BY ONE CMP R0,#3 ;LEGAL UNITS? BHI 70$ ;IF HI NO ASL R0 ;CONVERT TO DISPATCH INDEX ADD R0,PC ;DISPATCH 10$: BR 50$ ;1=TICKS BR 30$ ;2=SECONDS BR 20$ ;3=MINUTES MOV #60.,R0 ;4=HOURS CALL $MUL ;CALCULATE NUMBER OF MINUTES TST R0 ;OVERFLOW 16 BITS? BNE 70$ ;IF NE YES 20$: CMP R1,#1440. ;MORE THAN ONE DAY OF MINUTES? BHI 70$ ;IF HI YES MOV #30.,R0 ;MULTIPLY BY 60. SECONDS/2 CALL $MUL ;PRODUCT CANNOT OVERFLOW 16 BITS. MOV $TKPS,R0 ;GET TICKS PER SECOND ASL R0 ;MULTIPLY BY 2 BR 40$ ; 30$: MOV $TKPS,R0 ;GET TICKS PER SECOND 40$: CALL $MUL ;CALCULATE TICKS COUNT 50$: MOV R0,R2 ;TICKS COUNT ZERO? BIS R1,R2 ; BNE 60$ ;IF NE NO INC R1 ;MAKE TICKS COUNT 1 60$: RETURN ; 70$: DRSTS D.RS93 ;SET DIRECTIVE STATUS .END